package com.hs.room.repository.service

import com.hs.room.model.archive.AlarmLog
import com.hs.room.model.archive.ArchiveApproval
import com.hs.room.model.archive.ArchiveChange
import com.hs.room.model.archive.ArchiveLog
import com.hs.room.model.archive.OptLog
import kotlinx.coroutines.flow.Flow

/**
 * 档案字典仓库 类型、级别、状态
 */
interface ILogRepository {

    /***
     * 插入数据库
     */
    suspend fun insert(d: ArchiveApproval)

    /***
     * 插入数据库
     */
    suspend fun insert(d: AlarmLog)

    /***
     * 插入数据库
     */
    suspend fun insert(d: ArchiveChange)

    /***
     * 插入数据库
     */
    suspend fun insert(d: ArchiveLog)

    /***
     * 插入数据库
     */
    suspend fun insert(d: OptLog)

    /**
     * 查询所有信息
     */
    fun getArchiveLog(limit: Int, offset: Int): Flow<List<ArchiveLog>>

    /**
     * 查询所有信息
     */
    fun getArchiveApproval(limit: Int, offset: Int): Flow<List<ArchiveApproval>>

    /**
     * 查询所有信息
     */
    fun getOptLog(limit: Int, offset: Int): Flow<List<OptLog>>
    /**
     * 查询所有信息
     */
    fun getLastOpt( ): Flow<OptLog>

    /**
     * 查询所有信息
     */
    fun getArchiveChange(limit: Int, offset: Int): Flow<List<ArchiveChange>>

    /**
     * 查询所有信息
     */
    fun getAlarmLog(limit: Int, offset: Int): Flow<List<AlarmLog>>

    /**
     * 查询所有信息
     */
    fun countAlarmLog(): Int

    /**
     * 查询所有信息
     */
    fun countArchiveApproval(): Int

    /**
     * 查询所有信息
     */
    fun countArchiveChange(): Int

    /**
     * 查询所有信息
     */
    fun countOptLog(): Int

    /**
     * 查询所有信息
     */
    fun countArchiveLog(): Int

}